package com.cctc.rds.scheduler.client.worker;

import com.cctc.rds.scheduler.core.task.TaskLog;

import java.io.Closeable;

/**
 * 任务（自动）执行接口。
 * 描述信息：任务调度器客户端自动从 Leader 节点的执行容器中拉取任务并执行，执行完成后向 Leader 节点更新任务执行结果（任务状态：success、fail），并将
 * 更新后的任务实例日志（任务状态：success、fail）同步至所有 Follower 节点；
 * --> 如果任务实例日志状态为 success（执行成功），则结束执行。
 * --> 如果任务实例日志状态为 fail（执行失败），则设置重新调度时间为当前时间，并计算下一次延迟执行时间，更新任务状态为 pending。
 */
public interface TaskWorker extends Closeable {
    void run(TaskLog taskLog, TaskWorkerCallback callback);
}
